#!/bin/bash
# SDK 目录
export SDK_HOME=/mnt/cache/sdk
export JAVA_HOME=$SDK_HOME/java/21
export ANDROID_HOME=$SDK_HOME/android
#export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
rm -rf $SDK_HOME
git clone --progress --depth 1 -b linux-21 https://gitee.com/make_sound/java-se.git $JAVA_HOME
git clone --progress --depth 1 -b cmdline-tools https://gitee.com/make_sound/linux-ndk.git $ANDROID_HOME/cmdline-tools/latest
# 配置 git 全局用户名和邮箱
git config --global user.name "object"
git config --global user.email "1813033378@qq.com"
git config --global init.defaultBranch master
# Git 仓库配置
export GIT_PUSH_URL=git@gitee.com:make_sound/linux-ndk.git
GIT_TMP_DIR=/mnt/cache/git_ndk_repo
BRANCHES_LOG=/tmp/branches_processed.log

# 清理旧数据
rm -rf "$GIT_TMP_DIR"
mkdir -p "$GIT_TMP_DIR"
cd "$GIT_TMP_DIR" || exit 1
# 克隆仓库（带 SSH 支持）
if [ ! -d ".git" ]; then
    echo "🔍 正在克隆仓库: $GIT_PUSH_URL"
    git clone --depth=1 -b master "$GIT_PUSH_URL" .
fi
# 确保在主分支拉取最新
git checkout master || git checkout -b master
git pull origin master

# 获取所有 NDK 版本列表
echo "🔍 正在获取远程 NDK 列表..."
NDK_LIST=$(sdkmanager --list --verbose 2>/dev/null | grep -E "^ndk;" | awk '{print $1}')

if [ -z "$NDK_LIST" ]; then
    echo "❌ 无法获取 NDK 列表，请检查网络、SDK 路径或 cmdline-tools 是否正确安装"
    exit 1
fi

echo "✅ 共找到 $(echo "$NDK_LIST" | wc -l) 个 NDK 版本"
# 同意所有 SDK 许可证
yes | sdkmanager --licenses
# 使用 for 循环避免 while 管道导致的变量作用域问题
echo "$NDK_LIST" | while IFS= read -r package; do
    [ -z "$package" ] && continue

    VERSION=$(echo "$package" | cut -d';' -f2)
    BRANCH_NAME="$VERSION"

    echo "🔄 处理 NDK 版本: $VERSION"

    # 检查远程是否已有该分支
    if git ls-remote --heads origin "$BRANCH_NAME" | grep -q "$BRANCH_NAME"; then
        echo "🟢 分支 '$BRANCH_NAME' 已存在，跳过"
        continue
    fi

    # 创建新分支
    git checkout -b "$BRANCH_NAME"

    # 安装 NDK
    echo "📥 正在安装 NDK $VERSION ..."
    sdkmanager --install "$package"
    if [ $? -ne 0 ]; then
        echo "❌ 安装失败: $package，跳过"
        git checkout master  # 回到主分支
        git branch -D "$BRANCH_NAME"  # 删除失败分支
        continue
    fi

    # 检查是否真的安装成功（目录是否存在）
    if [ ! -d "$ANDROID_HOME/ndk/$VERSION" ]; then
        echo "❌ 安装目录未生成: $ANDROID_HOME/ndk/$VERSION"
        git checkout master
        git branch -D "$BRANCH_NAME"
        continue
    fi

    # 可选：支持部分检出
    git config core.sparseCheckout true
    # 使用 --work-tree 指向外部 NDK 目录
    git --work-tree="$ANDROID_HOME/ndk/$VERSION" add .
    # 添加 NDK 文件到 Git
    # 提交更改
    git commit -m "feat: add NDK $VERSION" || {
        echo "⚠️ 无新文件或提交失败，回退分支"
        git checkout master
        git branch -D "$BRANCH_NAME"
        continue
    }

    # 推送到远程
    echo "📤 推送分支 '$BRANCH_NAME' 到远程..."
    git push origin "$BRANCH_NAME"

    if [ $? -eq 0 ]; then
        echo "✅ 成功推送分支: $BRANCH_NAME"
    else
        echo "❌ 推送失败: $BRANCH_NAME"
        # 可选：重试或报警
    fi

    # 回到主分支
    git checkout master
    echo "----------------------------------------"
done

echo "🎉 所有 NDK 版本处理完成！"


